package org.mat.sample.enums;

/**

 * 订单状态机枚举（兼容物流调度场景）

 *

 * 状态流转逻辑：

 * WAIT_PAYMENT → PENDING_DISPATCH → DISPATCHED

 *               → IN_TRANSIT → DELIVERED

 *               → CANCELLED/FAILED

 */
public enum OrderStatus {

    /**

     * 待支付（初始状态）

     */
    WAIT_PAYMENT,

    /**

     * 待派送（支付完成后的状态）

     */
    PENDING,

    /**

     * 已派送（调度系统接单）

     */
    DISPATCHED,

    /**

     * 运输中（物流承运商已揽件）

     */
    IN_TRANSIT,

    /**

     * 已送达（终端客户签收）

     */
    DELIVERED,

    /**

     * 已取消（用户主动取消）

     */
    CANCELLED,

    /**

     * 派送失败（物流异常终止）

     */
    FAILED;

    /**

     * 是否为终态

     */
    public boolean isTerminal() {
        return this == DELIVERED
                || this == CANCELLED
                || this == FAILED;
    }
}